#!/usr/bin/env python
# -*- coding: utf-8 -*-
# a bar plot with errorbars
'''
@author Filipe Mestre & Andre Ventura
@date: 2 de Dezembro de 2013
@obs: Cria os gráficos de Distrito 
referentes às respetivas estatisticas
'''
import numpy as np
import matplotlib.pyplot as plt
import csv 

#http://matplotlib.org/examples/api/barchart_demo.html
#Label por cima das barras com o valor de y

def autolabel(rects, ax):
	'''
	Método que adiciona o valor da barra no topo
	@param rects lista de barras do gráfico
	@param ax eixos do gráfico
	'''
	
	for rect in rects:
		height = rect.get_height()
		ax.text(rect.get_x()+rect.get_width()/2., 1.05*height, '%d'%int(height),
                ha='center', va='bottom')
def gerar_grafico(x,y, label, title):
	'''
	Método que gera um gráfico

	@param x conjunto de pontos do eixo do x
	@param y imagens referentes aos pontos do eixo do x
	@param label Legenda da barras do gráfico
	@param title Tituto do grafico
	'''
	N = len(y)

	ind = np.arange(N)  # the x locations for the groups
	width = 0.35       # the width of the bars

	fig, ax = plt.subplots()
	rects1 = ax.bar(ind, y, width, color='r')

	ax.set_ylabel(label)
	ax.set_title(title)

	ax.set_xticks(ind+width)
	ax.set_xticklabels(x,  rotation='vertical')

	autolabel(rects1, ax)
	plt.show()

def grafico_estatistica_colocados_distrito():
	'''
	Metodo que cria o gráfico dos colocados por Distrito
	'''

	reader = csv.reader(open('estatistica_distrito.csv', 'rb'))
	lista = []

	for line in reader:                      
		lista.append(line)

	yColocados = []
	xLabels = []

	for i in lista:
		yColocados.append( int(i[0].split(';')[1]))
		xLabels.append(i[0].split(';')[0].decode('utf-8'))

	gerar_grafico(xLabels, yColocados, 'Colocados', 'Numero de Colocados por Distrito')
	

def grafico_estatistica_vagasSobrantes_distrito():
	'''
	Metodo que cria o gráfico das vagas sobrantes por Distrito
	'''

	reader = csv.reader(open('estatistica_distrito.csv', 'rb'))
	lista = []

	for line in reader:                      
		lista.append(line)

	yVagasSobrantes = []
	xLabels = []

	for i in lista:
		yVagasSobrantes.append( int(i[0].split(';')[2]))
		xLabels.append(i[0].split(';')[0].decode('utf-8'))

	gerar_grafico(xLabels, yVagasSobrantes, 'Vagas', 'Numero de Vagas Sobrantes por Distrito')

def grafico_estatistica_Permilagem_distrito():
	'''
	Metodo que cria o gráfico da permilagem 
	entre os colocados e as vagas sobrantes por Distrito
	'''

	reader = csv.reader(open('estatistica_distrito.csv', 'rb'))
	lista = []

	for line in reader:                      
		lista.append(line)

	yPermilagem = []
	xLabels = []

	for i in lista:
		yPermilagem.append( float(i[0].split(';')[3]))
		xLabels.append(i[0].split(';')[0].decode('utf-8'))

	gerar_grafico(xLabels, yPermilagem, 'Permilagem', 'Permilagem de alunos colocados por Distrito')

